/* :root伪类匹配文档树的根元素，对于 HTML 来说，:root 表示 <html> 元素，除了优先级更高之外，与 html 选择器相同 */
:root { 
  --primary-color: #31c27c;/* 声明全局 CSS 变量 */
}
body {
  margin: 0;
  /* 清除浏览器默认样式 */
  background: #f5f5f5;
  font-family: Microsoft Yahei;
  font-size: 14px;/* 设置默认字体和字号 */
  /* min-width: 1000px; */
}
a {
  text-decoration: none;/* 从链接上删除下划线 */
  color: #000;
}
header {/* 导航 */
  height: 90px;
  background: white;
  display: flex;/* 开启弹性盒子 */
  align-items: center;/* 竖直方向居中对齐 */
}
.header-inner, main {
  /* width: 1200px; */
  padding: 20px;
  margin: auto;
}
.tag-list {
  margin-top: 50px;
  margin-bottom: 15px;
}
.tag-item {
  display: inline-block;
  /* display: inline-block 允许在元素上设置宽度和高度，但在元素之后不添加换行符，因此该元素可以位于其他元素旁边 */
  padding: 0 8px;
  margin-right: 24px;
  line-height: 26px;
  color: #000;
  text-decoration: none;
}
.tag-active {
  background: var(--primary-color);
  /* var()函数可以插入一个自定义属性（也称为CSS变量）的值，用来代替非自定义属性中值的任何部分 */
  color: white;
}
.tag-item:not(.tag-active):hover {
/* 
  :not()伪类也被称为反选伪类，用来匹配不符合一组选择器的元素，并防止被选中；
  :hover伪类在用户将光标（鼠标指针）悬停在元素上时触发。
*/
  color: var(--primary-color);
}
.nowrap {
  white-space: nowrap;/* 	文本不换行，文本会在在同一行上继续，直到遇到<br>标签为止 */
  overflow: hidden;/* 内容若超出了给定的宽度和高度属性，则超出的部分将会被隐藏，不占位 */
  text-overflow: ellipsis;/* 显示省略符号来代表被修剪的文本 */
}
.playlist {
  display: grid;/* 采用网格布局 */
  grid-template-columns: repeat(auto-fill, minmax(200px,1fr));
  /* 
     grid-template-columns声明行间距和列间距； 
     repeat()函数，简化重复的值，其接受两个参数，第一个参数是重复的次数（上例是3），第二个参数是所要重复的值；
     auto-fill关键字表示自动填充，可达到每一行（或每一列）容纳尽可能多的单元格的目的；
     minmax()函数定义了一个长宽范围的闭区间，配合CSS网格布局一起使用，此处每一个列的宽度最小是200px，最大是1fr，即等分宽度。
  */
  gap: 45px 15px;
  /* gap属性是grid-column-gap和grid-row-gap的合并简写形式，此处行间距45px和列行距15px */
  margin-bottom: 45px;
}
.cover-wrap {
  display: flex;
  position: relative;
  overflow: hidden;
  width: 100%;
  margin-bottom: 15px;
  align-items: center;
  justify-content: center;/* 弹性容器水平居中对齐 */
  cursor: pointer;/* 设置光标的类型，在鼠标指针悬停在元素上时显示相应样式 */
}
.cover-img {
  width: 100%;
  transition: all 0.75s;/* 设置过渡动画 */
}
.cover-mask {
  position: absolute;
  /* 
     元素脱离文档流，不占据空间，其定位的元素和其他元素重叠，位置相对于最近的已定位祖先元素，
     如果元素没有已定位的祖先元素，那么它的位置相对于最初的包含块
  */
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: #000;
  opacity: 0;
  /* 元素的不透明度。换言之，opacity 属性指定了一个元素后面的背景的被覆盖程度，范围0-1，0完全透明，1不透明 */
  transition: all 0.5s;
}
.cover-play {
  position: absolute;
  left: 50%;
  top: 50%;
  margin-left: -35px;
  margin-top: -35px;
  opacity: 0;
  transform: scale(0.7);
  /* 
    scale(n)放大缩小，一个值：宽高同时放大缩小，两个值：第一个值缩放宽度，第二个值缩放高度，
    正整数（放大），负整数（翻转），小数（缩小）
  */
  transition: all 0.5s;
}
.cover-wrap:hover .cover-mask {
  opacity: 0.2;
}
.cover-wrap:hover .cover-play {
  opacity: 1;
  transform: scale(1);
}
.cover-wrap:hover .cover-img {
  transform: scale(1.07);
}
.album-title:hover {
  color: var(--primary-color);
}
.album-author {
  color: #999;
  line-height: 1.6;
}
.album-author:hover {
  color: var(--primary-color);
}
.album-time {
  color: #999;
}
.page {
  display: flex;
  align-items: center;
  justify-content: center;
}
.page-item {
  display: inline-block;
  color: #a2a2a2;
  line-height: 50px;
  padding: 0 20px;
  margin: 10px;
  font-size: 16px;
}
.page-current, .page-item:not(.page-more):hover {
  background: var(--primary-color);
  color: white;
}
footer {
  margin-top: 60px;
  background: #333;
  height: 200px;
}


